package com.ktz.shoping.db;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;

/**
 * 使用DBUtils完成对CURD的封装
 * @author 开拓者
 *
 */
public class DBDriver {
	/**
	 * 查询函数封装
	 * @param sql 查询语句
	 * @param rsh 结果集类型
	 * @param params 需要的参数
	 * @return 返回结果集
	 */
	public <T>T query(String sql,ResultSetHandler<T> rsh, Object...params){
		T result = null;
		try {
			QueryRunner queryRunner = new QueryRunner(DBDataSourece.getDataSource());
			//查询
			result = queryRunner.query(sql, rsh, params);
		} catch (SQLException e) {
			//抛出查询异常
			e.printStackTrace();
		}
		return result;
	}
	/**
	 * 更新、删除、插入函数封装
	 * @param sql 查询语句
	 * @param params 需要的参数
	 * @return 影响条数
	 */
	public Integer update(String sql, Object...params){
		Integer result = 0;
		try {
			QueryRunner queryRunner = new QueryRunner(DBDataSourece.getDataSource());
			//更新、删除、插入
			result = queryRunner.update(sql, params);
		} catch (SQLException e) {
			//抛出异常
			e.printStackTrace();
		}
		return result;
	}
	/**
	 * 增加函数封装
	 * @param sql 查询语句
	 * @param rsh 结果集类型
	 * @param params 需要的参数
	 * @return 插入的结果集
	 */
	public <T>T insert(String sql,ResultSetHandler<T> rsh, Object...params){
		T result = null;
		try {
			QueryRunner queryRunner = new QueryRunner(DBDataSourece.getDataSource());
			//插入
			result = queryRunner.insert(sql, rsh, params);
		} catch (SQLException e) {
			//抛出异常
			e.printStackTrace();
		}
		return result;
	}
}
